home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / umich / telecomm / zmdm.zoo / zmdm.doc < prev    next >
Encoding:
Text File  |  1991-04-27  |  32.4 KB  |  861 lines

  1.     zmdm.doc, v1.8 ++jrb
  2.  
  3.                 ACKNOWLEDGEMENTS
  4.  
  5.     ZMDM was derived from rz/sz for Unix  posted by 
  6.     Chuck Forsberg (...!tektronix!reed!omen!caf ). We
  7.     thank him for his excellent code, and for giving
  8.     us permission to use and distribute his code and
  9.     documentation.
  10.  
  11.     The code for detecting baud rate at startup is courtesy
  12.     of Brian Katzung (katzung@laidbak.UUCP). Thanks very
  13.     much!
  14.  
  15.     Andy Nicola did a lot of testing of the new features.
  16.     Thank You very much!
  17.  
  18.     Thanks to the many users on the net who wrote in.
  19.  
  20.     Thanks to Howard Chu (hyc@math.lsa.umich.edu) for his diffs
  21.     for overscan support and flow control option.
  22.  
  23.     Thanks to Bill Silvert (silvert@cs.dal.ca) and users of his
  24.     board for their enthusiastic support, and for testing various
  25.     buggy versions.
  26.  
  27.     It is possible to run @38.4K or higher baud rates, the changes
  28.     for this are simple. however, not all ST's run reliably at those
  29.     rates, so i left those options out.
  30.  
  31.     The phones module is totally compatible with our earlier program
  32.     xmdm, so phone directories created with xmdm can be used with zmdm.
  33.  
  34. ----------------------------------------------------------------------------
  35.     Enhancements since V1.8
  36.         o added duplex toggle to menu.
  37.         o cleanup the proto. now works fine with GEnies zmodem
  38.           download option.
  39.  
  40.     Enhancements since V1.7
  41.         o changes send CPS reporting. send report a block as
  42.           it begins to transmit it now. the cps includes read time
  43.           but not the write time of the receiver (so the two should
  44.           never be the same).
  45.         o quickly tried receive with GEnie and CompuServe
  46.         o fixed up sz binary mode. (thanks lars!)
  47.         o Complete protocol overhaul: brought it upto the latest
  48.           version i could find (05/25 version of unix rzsz). Now
  49.           supports RLE.
  50.         o fixed up Txwindow. i had broken it horribly,
  51.         o pulled out obuf support. it just caused problems, did
  52.           not gain anything at all. (the real gain comes from
  53.           sz streaming, and not by increasing the rs232 output
  54.           queue buffer size).
  55.         o only tested with gcc v1.37.1 (i dont intend to test the
  56.           others as i dont have them loaded on my HD anymore (and
  57.           i refuse to run off floppies!). however i was careful
  58.           not to break anything, but one never knows! As noted
  59.           below Alcyon is not supported any more).
  60.  
  61.     Enhancements since V1.68
  62.         o Alcyon C is no longer supported, nor is the old (V1.X)
  63.           Dlibs.
  64.         o Fixed up send not streaming. This was mainly due to
  65.           incorrect coding of Rxbuflen and related parameters
  66.           in sz.c.
  67.         o Cleaned up the code a bit.
  68.         o Protocol update to track Chuck F.'s changes in unix rzsz.
  69.         o merged Howard Chu's diffs for Overscan support
  70.           (not tested: #define OVERSCAN in config.h for support).
  71.         o merged Howards flow control diff. #define FLOW_CTRL
  72.           in config.h for flow control support.
  73.         o merged Howards HIBAUD diffs. I cant get this to work properly.
  74.  
  75.           Big thanks for Howard for his efforts!
  76.  
  77.     Enhancements since V1.67
  78.         o CPS reporting has changed. cps now is the effective
  79.           cps, on receive it includes the time to write the file.
  80.           on send it is the file send time (including read time).
  81.           note: on send the effective cps can be higher than the
  82.           baud rate can possible send. this discrepancy is because
  83.           of buffering. Also note, with some cpu accelarators in
  84.           this seems to come out to be a totally wild # (for
  85.           example i have seen this with early versions of
  86.           JRI's jato board )
  87.         o increased send buffer size
  88.         o minor bug fixes
  89.  
  90.     Enhancements since V1.64
  91.         o Updated protocol
  92.         o fixed some long/short int problems (due to strlen being
  93.           size_t for gcc lib)
  94.         o cursor is not turned on automatically. if you are running
  95.           this from the desktop and want the cursor turned on,
  96.           name the executable files with .tos or .ttp extensions.
  97.             o hi-rez toggle is preserved (ie: if you changed it
  98.               within zmdm, it is restored on exit).
  99.           Note: autowrap, and screen color inversion are not
  100.           preserved on purpose. if you want to change that
  101.           just look in main.c.
  102.  
  103.         o Bug: still does not understand the concept of
  104.           daylight saving time, so the St files will be
  105.           an hour behind when downloaded.
  106.           (also note: there are some versions of this program
  107.            munged by someone else, floating around on various BBS
  108.            that totaly screw up date/time/protection. Settle only
  109.            for the origonal!)
  110.         o Newer versions of TurboSt seem to live well with
  111.           the 50 line mode. QuickSt also seems to be fine.
  112.  
  113.     Enhancements since V1.64:
  114.         o accept an optional command line arguement for
  115.           default phone directory file name. If not found
  116.           or is not specified, then it looks for the 
  117.           environment variable "PHONE". If found it will
  118.           use it, otherwise the first time it tries to
  119.           use a phone directory, it'll prompt for a filename.
  120.         o Stderr now should go to screen. This fix is in the
  121.           gnu library and not in zmdm per se. (this also
  122.           will enable people to run the standalone programs
  123.           from flash etc). This program is supposedly incompatible
  124.           with Shadow. I dont have shadow, so i dont know what the
  125.           incompatibilities are, however this program uses standard
  126.           Tos calls for everything, and works under all versions
  127.           of Tos, so i suspect the problem is with Shadow.
  128.         o check in under RCS (internal change).
  129.  
  130.     Enhancements since V1.62:  (last Usenet release).
  131.  
  132.         o Now looks for environment variable "PHONE"
  133.           for default phone directory file name. If
  134.           found it will be opened.
  135.  
  136.         o Gnu C compiler added. Requires V1.35 or better.
  137.  
  138.     Enhancements since V1.2:
  139.     
  140.         o Some cleanup, moved common things around.
  141.           Some cosmetic additions.
  142.  
  143.         o MWC 3.0 compatible. The sample MW makefiles
  144.           reflect the setup required for MWC  V 3.0.6.
  145.  
  146.         o Manx Aztec C compatible. Tested with V 3.6a
  147.           of the compiler. Produces the smallest code
  148.           of all the compilers tested. See config.h,
  149.           makefile.man and makefman.sta.
  150.           CAUTION: for MegaST and 4Meg ST owners--
  151.             The Manx Version will not work correctly
  152.           for you due to a bug in the start up file
  153.           -- we are still trying to figure out exactly
  154.           what the problem is!
  155.  
  156.         o Auto Baud Rate detection on startup:
  157.           Previously ZMDM would set the baud rate
  158.           to a compile time configurable rate on
  159.           startup (it needed to know the baud rate
  160.           to determine its default packet size). Thanks
  161.           to code contributed by Brian Katzung, now it
  162.           detects the baud rate on startup.
  163.           Of course you can set the baud rate
  164.           within ZMDM (by hitting '<HELP>'  'b' ).
  165.  
  166.         o Compile time option to use all available memory
  167.           as recv/send buffer. See DYNABUF, LEAVEALONE and
  168.           MINACC preprocessor symbols in config.h. If you
  169.           prefer to use a fixed size buffer, this is still
  170.           possible by not #define'ing DYNABUF and setting
  171.           BBUFSIZ. MegaST OK - thanks Andy Nicola.
  172.  
  173.         o Stand Alone versions of RZ and SZ can be made
  174.           by compiling the sources with the preprocessor
  175.           symbols 'STANDALONE' #define'ed. See the makefile
  176.           'MAKEFILE.STA' for more details.
  177.           Stand Alone versions DO NOT do any command line
  178.           argument expansions for wild cards or directories
  179.           (unlike the integrated ZMDM).
  180.           Stand Alone versions tested from within Gulam,
  181.           Flash and Intersect. Thanks to Andy Nicola for
  182.           testing these features.
  183.  
  184.         o Remote versions of ZMDM, RZ and SZ can be made by
  185.           compiling the sources with the preprocessor symbol
  186.           'REMOTE' #define'ed. A remote version listens and
  187.           does all its I/O thru the serial port. Of course
  188.           it has to be fired up from console. One of our
  189.           area BBS's provides this as a D/L option, where
  190.           the BBS program execs a remote ZMDM, and one you exit
  191.           you return back to the BBS program.
  192.  
  193.             o Added -B (note: uppercase B) option to both RZ and SZ.
  194.           the -B function is a binary mode override, that disregards
  195.           the extension when deciding the transfer mode. This is
  196.           useful when say you are backing up your whole disk
  197.           to say a Unix host. (backup the exact image of the files),
  198.           or doing St-to-St type transfers.
  199.         
  200.         o Now compatible with the PD DLIB library. The
  201.           pre-processor symbol DLIBS must be defined. Only
  202.           tested with the Alcyon version of the library.
  203.  
  204.         o Added the phone module (a simple dialer with a
  205.           telephone numbers directory). This module is
  206.           only compiled in if the preprocessor symbol
  207.           'PHONES' is #define'ed. For those of you who
  208.           are familiar with XMDM, this module was directly
  209.           ripped out of there, with a small bug fix that
  210.           prevented it from running under TurboSt.ACC.
  211.  
  212.         o Long packet lengths now allowed at slower baud rates
  213.           rather than insisting on using the default as the max
  214.           packet length. For instance
  215.             sz -l 1024 files..
  216.           will now send 1024 byte packets at low baud rates (<= 2400).
  217.           The corresponding change has been made to the unix
  218.           end of the software too.
  219.  
  220.         o TurboSt.ACC note:
  221.             The high rez toggle (25/50 lines) on a
  222.         monochrome monitor will NOT work is TurboSt.ACC is
  223.         installed. The problem is on the TurboSt.ACC end. Using
  224.         the high rez toggle does'nt cause any ill-effect, it just
  225.         does not do anything.
  226.           
  227.     Enhancements since V1.0:
  228.         o (This enhancement is only present when
  229.            you compile with the pre-processor symbol
  230.            `RECURSE' defined - see the makefile's)
  231.           sz now takes a  directory as an argument.
  232.           If the name of a directory is given as an
  233.           argument, then the contents of that directory
  234.           and all its subdirectories are sent. A new
  235.           option to sz is '-P <dir or file>'
  236.           (capital 'P' not 'p'), that
  237.           'prunes' the expansion of a directory. For
  238.           example if you wanted to send all the files
  239.           in the 'C' partition of your hard disk, except
  240.           the 'tmp', 'usr' and 'foo\bar' subdirectories, you would
  241.           issue the following command in the transfer
  242.           shell:
  243.  
  244.              sz -f -P c:\tmp -P c:\usr -P c:\foo\bar c:\
  245.  
  246.           Notice that you may specify multiple -P 'rune
  247.           options. The argument to the -P option may also be
  248.           the name of a file that you want to prune off.
  249.           Also note that to send full path names
  250.           to the remote end, the '-f' option is required,
  251.           otherwise the remote end will create all the
  252.           files in its current working directory. (Also
  253.           see CWRU extension to Unix 'rz', where 'rz' when
  254.           receiving full path names (ie. when you specify the
  255.           '-f' option to sz on the ST end) will create all
  256.           subdirectories required to receive the file). The
  257.           ST 'rz' always creates all subdirectories required
  258.           to receive a path when the other end is sz'ing with
  259.           the '-f' option. Also note that in both the rz's
  260.           all subdirectories are created relative to the 
  261.           current working directory, even though the path may
  262.           specify an absolute path.
  263.  
  264.             o File name mapping is slightly changed from V1.0.
  265.           When receiving a filename that has multiple '.'s
  266.           all but the last '.' is replace with an '_'. So
  267.           'foo.bar.ext' becomes 'foo_bar.ext'. Similarly
  268.           '123.456.789\aaa.bbb.ccc' becomes '123_456.789\aaa_bbb.ccc'.
  269.           As in V1.0, the filename and extension (of each
  270.           component of a path name) are truncated to 8 and 3
  271.           characters respectively. So '123.456789.ext\foobarbaz'
  272.           becomes '123_4567.ext\foobarba'. Also note that
  273.           while sending, '\'s are sent as '/'s. The ST drive
  274.           specifier part of a path name is never sent.
  275.           So 'c:\file.ext' is sent as '/file.ext' (remember:
  276.           that full pathnames are only sent when the '-f'
  277.           option is specified to 'sz').
  278.  
  279.         o Many bug fixes since V1.0!
  280.  
  281. ----------------------------------------------------------------------------
  282.  
  283.  
  284.     Zmdm consists of two main components:
  285.         o The terminal emulator
  286.         o The transfer shell
  287.  
  288.     - The terminal emulator emulates a 80*25 terminal
  289.     (or optionally the 80*50 mode on Mono systems only).
  290.     It uses the escape codes of the bios built in enhanced
  291.     vt52 emulator. For UN*X users i have included the
  292.     termcap entry that we use.
  293.  
  294.     - The transfer shell lets you send/receive files using
  295.     Xmodem/Xmodem-CRC/Xmodem-1K/Ymodem or Zmodem protocols.
  296.         In addition it provides UN*X csh like command for your
  297.     convenience, and does (TOS style) wild-card handling,
  298.         and (only single) quoting of arguments. Please note that
  299.     this is a convenience feature, and in no way does it
  300.     pretend to be compatible with csh or any other shell.
  301.     See the accompanying file YMODEM.DOC by Chuck Forsberg,
  302.     for details of the above transfer protocols.
  303.  
  304.     This note describes the commands available from the
  305.     "transfer shell". The transfer shell is the built in command line
  306.     interface. In case you are wondering why we choose to
  307.     use a command line interface, the answer is quite simple.
  308.     The functions available have so many options and combinations
  309.     thereof, that it would be totally impractical if not impossible
  310.     to put them in menus/dialogues (each menu will have to be at least
  311.     3 levels deep). Of course it is much easier to type something
  312.     like 'sz -l 128 -L 128 *.c' than answering the at least three
  313.     dialogues required to pick up the same info. You enter the
  314.     transfer shell from the terminal emulator by hitting <HELP>
  315.     and choosing 'T' from the main menu. Once you are done using the
  316.     transfer shell, you simply hit <RETURN> to pop back into the terminal
  317.     emulator, exactly where you left off.
  318.  
  319.     This program was written primarily for situations where you
  320.     are connected to remote hosts either directly or via modems.
  321.     The timing and error parameters are NOT suitable for hosts
  322.     such as CompuServe etc, where there may large delays or your
  323.     phone line is noisy. We distributed a program called XMDM earlier
  324.     that is very tolerant of delays/noisy lines and has been used
  325.     very successfully for BBS'ing around the country. XMDM has
  326.     conveniences such as dialing directories etc for that purpose.
  327.     If you have a old version of XMDM ( < V1.8) that does not have
  328.     dialing directories etc, please mail me for a new copy.
  329.  
  330.     ZMDM has been tested in the following ways:
  331.     1) Between two ST's running ZMDM. 19200 Baud no problem!
  332.     2) With unix sz/rz running on a BSD4.3 on Vaxen.
  333.     3) With unix sz/rz running on Apollo Dn330/Dn300 under Aegis and
  334.        Domain IX (over a siologin line).
  335.     4) With unix sz/rz running on a Sun under SunOS.
  336.     6) With an Ibm At running Procomm using Ymodem/Xmodem.
  337.     7) With ForemSt bbs, with the BBS sending in Ymodem batch
  338.        mode. (note: ForemSt bbs's do not take batch uploads -
  339.        Matt Singer are you listening??)
  340.  
  341.     8) With a Mac running MicroPhone using Ymodem mode.
  342.     9) With an Intel 210 box running Xenix (yech!).
  343.         
  344.     UNIX users please note:
  345.         If the load on your system is high, the UNIX tty
  346.     driver drops characters when receiving at 9600 or higher baud rates.
  347.     There are two ways around this problem:
  348.     - use shorter packet and frame lengths using the `-l' and `-L' options
  349.     of SZ. For examples `sz -l 128 -L 128 files...' work most of
  350.     the time at 9600/19200 baud without any problem.
  351.  
  352.     - reduce your baud rate to 4800 baud. Normally the first solution
  353.     works fine, but if you have an extraordinarily loaded machine
  354.     (or are running on a brain damaged 750 with DZ11's), then 4800 baud
  355.     works better.
  356.     
  357.     - Those who have 3b2 boat anchors, the tty driver (at least on
  358.      the boxes we have) is totally useless over 1200 baud.
  359.  
  360.     -----
  361.     
  362.  
  363. NAME
  364.      rb, rz - XMODEM, YMODEM, ZMODEM (Batch) file receive
  365.  
  366. SYNOPSIS
  367.      rz    [-Bepqtvw]
  368.      rb    [-pqtv]
  369.      rz    [-cqtv] file
  370.  
  371.  
  372. DESCRIPTION
  373.      This program uses error correcting    protocol to receive files
  374.      over a serial port    from a variety of programs running under
  375.      TOS, PC-DOS, CP/M, Unix, and other operating systems.
  376.  
  377.      The first form of rz (Receive ZMODEM) receives files with
  378.      the ZMODEM    batch protocol.     If the    sending    program    does not
  379.      support ZMODEM, rz    steps down to YMODEM protocol after 50
  380.      seconds.  This delay can be eliminated by calling the pro-
  381.      gram as rb    .
  382.  
  383.      When receiving with XMODEM    or YMODEM, Rz accepts either
  384.      standard 128 byte sectors or 1024 byte sectors (YAM -k
  385.      option).  The user    should determine when the longer block
  386.      length actually improves throughput without causing prob-
  387.      lems.
  388.  
  389.      If    extended file information (file    length,    etc.) is
  390.      received, the file    length controls    the number of bytes writ-
  391.      ten to the    output dataset (YMODEM only), and the modify time
  392.      and file mode (iff    non zero) are set accordingly. A special feature
  393.      of the ST implementation is that if the remote end sends
  394.      full path names (-f option of sz) all required directories
  395.      will be automatically created on the ST end. The directories
  396.      will be rooted at the current directory and not at the root level.
  397.  
  398.      The second    form of    rz receives a single file with XMODEM
  399.      protocol.    The user must supply the file name to both send-
  400.      ing and receiving programs.
  401.  
  402.      When rz is invoked, Verbose is set to 2, causing frame by
  403.      frame progress reports to stderr.  This may be disabled with
  404.      the q option.
  405.  
  406.  
  407.      The meanings of the available options are:
  408.      
  409.      B      (ZMODEM) force all files to be received in binary mode.
  410.       Useful for ST-to-ST transfers (for Ascii files where
  411.       you don't want LF to CRLF conversion). This is
  412.       a local override, specifying `-B' overrides any mode
  413.       the sender specifies (it however will still honor any `protect'
  414.       or `append' requests from the sender)
  415.       (Applicable to ZMODEM transfers only).
  416.  
  417.      c      Request 16 bit CRC.  XMODEM file transfers default to    8
  418.       bit checksum.     YMODEM    and ZMODEM normally use    16 bit
  419.       CRC.
  420.  
  421.      p      (ZMODEM) Protect: skip file if destination file exists.
  422.  
  423.      q      Quiet    suppresses verbosity.
  424.  
  425.      t tim
  426.       Change timeout to tim    tenths of seconds.
  427.  
  428.      v      Verbose, more v's give more verbose. Info is also
  429.       appended to logfile 'rzlog' .    More v's generate more output.
  430.  
  431.      e    Escape control characters (Z)
  432.  
  433.      w    N Window is N bytes (Z) -- control receive window size
  434.  
  435. ZMODEM CAPABILITIES
  436.      Rz    supports incoming ZMODEM binary    (-b), ASCII (-a), protect
  437.      (-p), and append (-+) requests, and ZMODEM    command    execu-
  438.      tion. The incoming mode may be optionally overriden by specifying
  439.      the `-B' option to Rz, in which case all files will be received
  440.      in binary mode regardless of the incoming mode (protect and append will
  441.      still be obeyed). 
  442.  
  443.      Rz also supports incoming pathnames, and will recursively
  444.      create all subdirectories as required. Rz preserve file mod
  445.      times, and file protection. The translation of Unix protection
  446.      bits to ST file attributes is based on the Unix owner (07XX)
  447.      protection bits.  Presently, only read and write bits are considered.
  448.      All received pathnames are considered to be rooted at the 
  449.      current working directory. Any leading '/' from unix systems
  450.      is discarded (ie. all incoming pathnames are considered unrooted,
  451.      and are locally 'planted' at the current working directory).
  452.      Ascii/Binary file modes are determined by examining the file
  453.      extension on the incoming path name. If the extension is one
  454.      of the following (case independent), then it is assumed to be
  455.      a binary file, ascii other wise. The ascii translation of 
  456.      '\n' to '\r\n' is done locally for ZMODEM (only).
  457.      For X or Y modem the sender determines the file type (see
  458.      the file 'common.c' for the latest list).
  459.  
  460.     ".PRG", ".TOS", ".TTP", ".ARC", ".ACC", ".IMG", ".RSC", ".O",
  461.         ".OBJ", ".NEO", ".PIC", ".PI1", ".PI2", ".PI3", ".PQ1", ".PQ2",
  462.         ".PQ3", ".BRD", ".ANI", ".STW", ".FNT", ".PRT", ".SNG", ".NEC",
  463.         ".CNF", ".Z"  , ".DFN", ".GEM", ".EZD", ".LNK", ".SYM", ".LZH",
  464.         ".PIX", ".X32", ".OUT", ".A",   ".CCC", ".CL",  ".CMD", ".COM",
  465.         ".CRL", ".DAT", ".DIR", ".EXE", ".OVL", ".PAG", ".REL", ".SAV",
  466.         ".SUB", ".SWP", ".SYS", ".TAR", ".UTL", ".IM",  ".PAK", ".ZOO"
  467.  
  468.  
  469.  
  470. RZ/SZ(1)              ST Programmer's Manual            RZ/SZ(1)
  471.  
  472. NAME
  473.      sz
  474.  
  475. SYNOPSIS
  476.      sz    [-+BdefkLlNnopqtuwvy][-P <directory or file>]*  file ...
  477.      sz    -X [-kqtuv] file
  478.      sz    [-oqtv] -c COMMAND
  479.      sz    [-oqtv] -i COMMAND
  480.  
  481. DESCRIPTION
  482.      Sz    uses the ZMODEM, YMODEM    or XMODEM error    correcting proto-
  483.      col to send one or    more files over    a serial port to a
  484.      variety of    programs running under PC-DOS, CP/M, Unix, VMS, TOS
  485.      and other operating systems.
  486.  
  487.  
  488.      The first form of sz sends    one or more files with ZMODEM or
  489.      YMODEM batch protocol.  Normally, only the    file name part of
  490.      the pathname is transmitted. Additional
  491.      information about the file    is transmitted.     If the    receiving
  492.      program uses this information, the    transmitted file length
  493.      controls the exact    number of bytes    written    to the output
  494.      dataset, and the modify time and file mode    are set    accord-
  495.      ingly.
  496.  
  497.      The second    form of    sz uses    the -X flag to send a single file
  498.      with XMODEM or XMODEM-1k protocol.     The user must supply the
  499.      file name to both sending and receiving programs.
  500.  
  501.  
  502.      The third form sends a single COMMAND to the receiver for
  503.      execution.     Sz exits with the COMMAND return value.
  504.  
  505.  
  506.      The fourth    form sends a single COMMAND to the receiver for
  507.      execution.     Sz exits as soon as the receiver has correctly
  508.      received the command, before it is    executed.
  509.  
  510.  
  511.      In SZ Verbose is set to 2, causing frame by frame pro-
  512.      gress reports to stderr.  This may    be disabled with the q
  513.      option.
  514.  
  515.      The meanings of the available options are:
  516.  
  517.      +      Instruct the receiver    to append transmitted data to an
  518.       existing file    (ZMODEM    only).
  519.  
  520.      B      (ZMODEM) force all files to be sent in binary mode.
  521.       Useful for ST-to-ST transfers (for Ascii files where
  522.       you don't want LF to CRLF conversion).
  523.       (Applicable to ZMODEM transfers only).
  524.  
  525.      c COMMAND
  526.       Send COMMAND to the receiver for execution, return with
  527.       COMMAND's exit status.
  528.  
  529.      d      Change all instances of "." to "/" in    the transmitted
  530.       pathname.  Thus, C.omenB0000 (which is unacceptable to
  531.       MSDOS    or CP/M) is transmitted    as C/omenB0000.     If the
  532.       resultant filename has more than 8 characters    in the
  533.       stem,    a "." is inserted to allow a total of eleven.
  534.  
  535.      e      Escape all control characters; normally XON, XOFF, CR-
  536.       @-CR,    and Ctrl-X are escaped.
  537.  
  538.      f      Send Full pathname.  Normally    directory prefixes are
  539.       stripped from    the transmitted    filename.
  540.  
  541.      i COMMAND
  542.       Send COMMAND to the receiver for execution, return
  543.       Immediately upon the receiving program's successful
  544.       reception of the command.
  545.  
  546.      k      (XMODEM/YMODEM) Send files using 1024    byte blocks
  547.       rather than the default 128 byte blocks.  1024 byte
  548.       packets speed    file transfers at high bit rates.  (ZMO-
  549.       DEM streams the data for the best possible throughput.)
  550.  
  551.      L N  Use ZMODEM sub-packets of length N.  A larger    N (32 <=
  552.       N <= 1024) gives slightly higher throughput, a smaller
  553.       N speeds error recovery.  The    default    is 128 below 300
  554.       baud,    256 above 300 baud, or 1024 above 2400 baud.
  555.  
  556.      l N  Wait for the receiver    to acknowledge correct data every
  557.       N (32    <= N <=    1024) characters.  This    may be used to
  558.       avoid    network    overrun    when XOFF flow control is lack-
  559.       ing.
  560.  
  561.      n      (ZMODEM) Send    each file if destination file does not
  562.       exist.  Overwrite destination    file if    source file is
  563.       newer    or longer than the destination file.
  564.  
  565.      N      (ZMODEM) Send    each file if destination file does not
  566.       exist.  Overwrite destination    file if    source file has
  567.       different length or date.
  568.  
  569.      o      (ZMODEM) Disable automatic selection of 32 bit CRC.
  570.  
  571.      p      (ZMODEM) Protect existing destination    files by skipping
  572.       transfer if the destination file exists.
  573.  
  574.      q      Quiet    suppresses verbosity.
  575.  
  576.      r      Resume interrupted file transfer.  If    the source file
  577.       is longer than the destination file, the transfer com-
  578.       mences at the    offset in the source file that equals the
  579.       length of the    destination file.
  580.  
  581.      t tim
  582.       Change timeout to tim    tenths of seconds.
  583.  
  584.      u      Unlink the file after    successful transmission.
  585.  
  586.      v      Verbose causes a list    of file    names to be appended to
  587.       szlog .    More v's generate more output.
  588.  
  589.      X      Send a single    file with XMODEM or XMODEM-1k protocol.
  590.  
  591.      y      Instruct a ZMODEM receiving program to overwrite any
  592.       existing file    with the same name.
  593.  
  594.      w      N restrict transmit window size to N.
  595.  
  596.      z,Z  Use ZMODEM file compression to speed file transfer.
  597.       (this is done only if the receiver understands too, rz does!)
  598.  
  599.      P <directory or file>
  600.     (ZMODEM) Sz may be given the name of
  601.     a directory, in which case it will send the contents
  602.     of the directory, and all the subdirectories thereof.
  603.     The -P 'Prune' option is used to prune out the named directory
  604.     or file while expanding the directory tree. Multiple
  605.     -P options may be specified. This option
  606.     is only present when the source is compiled with the
  607.     pre-processor symbol `RECURSE' defined.
  608.  
  609.     SZ guesses the file mode by examining the filename extension as
  610.     discusses under RZ above. SZ -f send full pathnames with '\'
  611.     converted to '/'. The ST drive specifier is never sent.
  612.  
  613. SEE ALSO
  614.      ZMODEM.DOC, YMODEM.DOC, IMP(CP/M),    cu(1), Professional-YAM
  615.      manual, sz(omen), usq(omen), undos(omen)
  616.  
  617.      Compile time options required for various operating systems
  618.      are described in the source file.
  619.  
  620. NOTES
  621.     Depending on your file structure, when using the recursively
  622.     descend a directory option of Sz, ZMDM can demand a lot of
  623.     dynamic memory. When the pre-processor symbol `RECURSE' is
  624.     defined, for Mark Williams C, `_stksize' is set to 16K. If
  625.     you are using Alcyon C, please use a decent version of
  626.     GEMSTART.S. We use the version from pratt@atari with
  627.     memory model (STACK=1), which gives quarter of available
  628.     memory to stack+heap. Note that all the dynamic memory is
  629.     taken off the program heap (for Alcyon, and off the Arena
  630.     above the stack for Mark Wiliams), ie. ZMDM uses `malloc' not
  631.     `Malloc'.
  632.  
  633.     It is possible to run out of dynamic memory when descending
  634.     a file structure with a lot of files and/or deep-hierarchies.
  635.     The simplest way to work around this problem is to do the
  636.     sending in parts by using the -P rune option of Sz. For
  637.     instance if you run out of memory while trying to send your
  638.     C partition, you may want to prune out some directories and
  639.     send things in parts. In my case i backup my C partition to
  640.     our unix host in the following manner:
  641.  
  642.     sz -f -P c:\bin -P c:\lib c:\  /* send eveything in the C
  643.                         partition except the 'bin'
  644.                         and 'lib' subdirectories */
  645.  
  646.     sz -f c:\bin c:\lib          /* then send the 'bin' and 'lib'
  647.                         directories */
  648.  
  649.     The second solution depends on if you are using Mark Williams
  650.     or Alcyon C libraries. If you are running out of memory because
  651.     of deep hierarchies, you need to increase the stack. If you are
  652.     running out of memory because of a lot of files, then you
  653.     need to decrease the stack to allow for a larger arena in
  654.     the case of MWC (and trade-off for depth), or in the case of
  655.     Alcyon you need to increase stack+heap. On systems with a
  656.     large Ramdisk or many ACCs make sure you have enough space
  657.      before doing this.
  658.  
  659.     The TTY input buffering on    some systems may not allow long
  660.     blocks or streaming input,    especially at high baud    rates.
  661.     The Pro-YAM zmodem    l numeric parameter may    be set to a value
  662.     between 64    and 1024 to limit the burst length.
  663.  
  664. BUGS
  665.      THIS SOFTWARE IS STILL UNDER DEVELOPMENT AND ALMOST POSITIVELY
  666.      CONTAINS BUGS. PLEASE REPORT ALL SUCH CRITTERS TO dsrgsun!bammi.
  667.  
  668.      Pathnames are restricted to 127 characters.  In XMODEM sin-
  669.      gle file mode, the    pathname given on the command line is
  670.      still processed as    described above.
  671.  
  672. FILES
  673.  
  674.      (rz|sz)log    stores debugging output    generated with -vvv[v]*
  675.             option.
  676.  
  677. OTHER COMMANDS
  678.     The following command are available in the
  679.     transfer shell:
  680.  
  681.     <regular-expression> ::= <file name> | <wild card> |
  682.                  'quoted string'
  683.     NB: A quoted string cannot contain embedded single quotes. There
  684.         are no escape character available in a quoted string.
  685.  
  686.     rm,   remove files
  687.         rm [-i] <regular expression>
  688.         -i ::= interactive mode, you are prompted before
  689.                file(s) are removed.
  690.  
  691.     cp,   copy files
  692.         cp <many files> directory
  693.             copy all files into directory
  694.             cp *.c d:\foo - copy all C files into foo 
  695.                         directory on drive D:
  696.         cp <file> <directory>
  697.             copy file to directory\file.
  698.  
  699.         cp <file> <file>
  700.             file to file copy
  701.             'cp file con:' to get the listing of a file.
  702.  
  703.     ls,   list directory
  704.         ls [wild card]
  705.         ls without an argument will list all files in the
  706.         current directory. If an argument is given, then
  707.         only files matching the wild card will be listed.
  708.             ls *.c - list all C files in current directory
  709.             ls d:\foo - list all files in foo directory on D:
  710.             ls d:\foo\*.c - list all C files in foo directory
  711.  
  712.     cd,   change working directory
  713.         cd directory
  714.  
  715.     md,   make a directory
  716.         md directory
  717.  
  718.     rd,   remove a directory
  719.         rd directory
  720.         Due to a Gemdos bug, you may have to say 'rd directory'
  721.         twice to get rid of directory. This happens when you
  722.         try to remove a directory that you have never visited.
  723.  
  724.     pwd,  print  working directory
  725.         prints the current working directory
  726.  
  727.     df,   check free space
  728.         df [device]
  729.         df without an argument will show free space on current drive.
  730.         df with an argument will show free space on specified drive.
  731.  
  732. TERMCAP
  733.     Termcap entries that may be used for the terminal emulator.
  734.  
  735. st|520st|atariST|520 or 1040, bw, std sys font, 25 lines, 80 col:\
  736.     :ae=\Eba:al=\EL:am:as=\Ebc:\
  737.     :bl=^G:bs:\
  738.     :cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:cr=^M:\
  739.     :dl=99\EM:do=\EB:\
  740.     :ho=\EH:\
  741.     :is=\Ev\Ee:\
  742.     :kd=\274:kh=\216:kl=\275:kr=\276:ku=\273:\
  743.     :le=^H:li#25:\
  744.     :nd=\EC:nl=^J:\
  745.     :pt:\
  746.     :se=\Eq:so=\Ep:sr=\EI:\
  747.     :ta=^I:\
  748.     :up=\EA:
  749.  
  750.  
  751. ST|ST25|atariSTcolor|as above but with color for standout :\
  752.     :ae=\Eba:al=\EL:am:as=\Ebc:\
  753.     :bl=^G:bs:\
  754.     :cm=\EY%+ %+ :co#80:li#25:cr=^M:cd=\EJ:ce=\EK:cl=\EH\EJ:\
  755.     :dl=99\EM:do=^J:\
  756.     :ho=\EH:\
  757.     :is=\Ev\Ee:\
  758.     :kd=\274:kh=\216:kl=\275:kr=\276:ku=\273:\
  759.     :le=^H:\
  760.     :nd=\EC:nl=^J:\
  761.     :pt:\
  762.     :so=\Ec2\Eb3:se=\Ec0\Eb3:sr:\EI:\
  763.     :ta=^I:\
  764.     :up=\EA:
  765.  
  766. sT|st50|AtariST emulating vt52, bw, 50 lines, 80 col:\
  767.     :ae=\Eba:al=\EL:am:as=\Ebc:\
  768.     :bl=^G:bs:\
  769.     :cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:cr=^M:\
  770.     :dl=99\EM:do=^J:\
  771.     :ho=\EH:\
  772.     :is=\Ev\Ee:\
  773.     :kd=\274:kh=\216:kl=\275:kr=\276:ku=\273:\
  774.     :le=^H:li#50:\
  775.     :nd=\EC:nl=^J:\
  776.     :pt:\
  777.     :se=\Eq:so=\Ep:sr=\EI:\
  778.     :ta=^I:\
  779.     :up=\EA:
  780.  
  781. St|520stf|atariST|520 or 1040, bw, std sys font, for fast lines:\
  782.     :ae=\Eba:am:as=\Ebc:\
  783.     :bl=^G:bs:\
  784.     :cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:cr=^M:\
  785.     :do=\EB:\
  786.     :ho=\EH:\
  787.     :is=\Ev\Ee:\
  788.     :kd=\274:kh=\216:kl=\275:kr=\276:ku=\273:\
  789.     :le=^H:li#25:\
  790.     :nd=\EC:nl=^J:\
  791.     :pt:\
  792.     :se=\Eq:so=\Ep:sr=\EI:\
  793.     :ta=^I:\
  794.     :up=\EA:
  795.  
  796. COMPILING
  797.  
  798.     The source provided with this distribution will compile
  799.     with either ALCYON C V4.14 as distributed with the 
  800.     Atari Development System,  with Mark Williams C Version 2.00
  801.     or later, with MANX Aztec C (V3.6a tested) or with Gnu C (v1.35
  802.     or later).
  803.     (please note that the system will NOT compile with earlier
  804.      versions of either compiler.)
  805.  
  806.     Edit config.h.
  807.  
  808.     If you are using Alcyon(and ALN for the linker), check paths in LNK
  809.  
  810.     Define the preprocessor symbol `RECURSE' if you
  811.     want the sz to accept directory names(and send its
  812.     contents), and for the -P option.
  813.  
  814.     To compile with Gnu C see `makefile.gcc' and `makefilg.sta'
  815.     To compile with Alcyon see the file `makefile.alc'
  816.     To compile with Mark Williams C see the file `makefile'
  817.     To compile with Manx Aztec C see the file `makefile.man'
  818.  
  819.     Rename ZMDM.PRG to ZMDM.TOS if you so desire.
  820.  
  821. MORE ALCYON NOTES:
  822.     -- Some people seem to have a bad version of as68 with Alcyon,
  823.      that does'nt handle static variables too well (ie. symbols of the
  824.      form "`name" in the assembler). Please make sure yours is not one of
  825.      these.
  826.  
  827.     -- Use a reasonable version of gemstart.s - ie. one which gives you
  828.      a decent amount of stack+heap space. One of the nicer versions
  829.      floating around is the one written by Alan Pratt @atari, that
  830.      gives you the various memory model options, and corrects the
  831.      bug with the bdos call as suggested by Robert Royar on this net.
  832.  
  833.     -- Do NOT use the `fix' distributed on CompuServe developers forum
  834.     in the file WILDFI.ARC (in Dl7). This fix does'nt fix anything,
  835.     it breaks everything!
  836.  
  837. KNOWN BUGS
  838.  
  839.     If a receive is cancelled/aborted, the receive file
  840.     buffer is not flushed to the file. Personally, i
  841.     view this as a feature rather than a bug, so it is
  842.     unlikely to be `fixed'.
  843.  
  844. DISCLAIMER
  845.     This code is in public domain, and you are encouraged
  846.     to distribute it further. You may however not sell the
  847.     code, or use it for any commercial gains. The code is
  848.     provided as is, and we are not responsible for any
  849.     omissions/errors, bugs, nor do we claim correctness or
  850.     its fitness for any purpose.
  851.  
  852.     Please forward your comments and suggestions to
  853.  
  854.                 Jwahar Bammi
  855. bang:   {any internet host}!dsrgsun.ces.CWRU.edu!bammi    jwahar r. bammi
  856. domain: bammi@dsrgsun.ces.CWRU.edu
  857. GEnie:    J.Bammi
  858. Compu$erve: 71515,155 or ">internet:bammi@dsrgsun.ces.cwru.edu"
  859.  
  860. /* EOF */
  861.